package member.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import member.domain.Member;
import member.service.MemberService;

public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	String url = null;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 		1. 요청파라미터 조회
		String id = request.getParameter("id");
		String password = request.getParameter("password");
//		2. 비즈니스 로직
		MemberService service = MemberService.getInstance();
		Member member = service.serchMemberById(id);//찾았으면 객체, 못찾으면 null;
		if(member != null){//id존재
			if(password.equals(member.getPassward())){//로그인성공
				url = "/member/login_success.jsp";
				//httpSession 객체를 생성
				HttpSession session = request.getSession();
				//로그인 여부를 확인할때 사용할 Attribute를 session에 binding.
				session.setAttribute("login_member", member);
				session.setMaxInactiveInterval(60*60);//초 값을 넣어야 하는데 이렇게 해도 컴파일러가 계산해준다.
//				그리고 이렇게 쓰는게 가독성이 좋다. 
//				그렇데 이렇게 쓰지 않는다. 이렇게 서블릿 마다 개벌적으로 세션 유지 시간을 적어줄리가 있겠나?
//				그래서 이런 경우는 그냥 web.xml에 적어서 공통적으로 관리한다.
			}else{//id : ok, pwd 틀린경우
				url = "/member/login_form.jsp";
				request.setAttribute("error_message", "패스워드를 확인하세요");
			}
		}else{//id가 틀린경우
			url = "/member/login_form.jsp";
			request.setAttribute("error_message", "ID를 확인하세요");
		}
		RequestDispatcher rdp = request.getRequestDispatcher(url);
		rdp.forward(request, response);
	}

}
